import cv2
import numpy as np

def detect_edges(img):
    edges = cv2.Canny(img, 100, 200)  # 使用Canny算法检测边缘
    return edges

img1 = cv2.imread('pic_input/src2.jpg', cv2.IMREAD_GRAYSCALE)
img2 = cv2.imread('pic_input/align_image2.jpg', cv2.IMREAD_GRAYSCALE)

# 高斯模糊，必须是奇数，数字越小，边缘越多，噪声越多；大轮廓使用5，小边缘使用1
blurred1 = cv2.GaussianBlur(img1, (3, 3), 0)
blurred2 = cv2.GaussianBlur(img2, (3, 3), 0)

edges1 = detect_edges(blurred1)
edges2 = detect_edges(blurred2)

# 创建一个与图像相同大小的空白图像
combined_edges = cv2.cvtColor(img1, cv2.COLOR_GRAY2BGR)

# 使用不同的颜色标记两幅图像的边缘
combined_edges[np.where(edges2 == 255)] = [0, 0, 255]  # 绿色表示第一幅图像的边缘
combined_edges[np.where(edges1 == 255)] = [0, 255, 0]  # 红色表示第二幅图像的边缘

# 保存结果图像
cv2.imwrite('pic_output/canny2_3.jpg', combined_edges)

# 显示原始图像和处理后的边缘图像
# cv2.imshow('Image 1', img1)
# cv2.imshow('Image 2', img2)
cv2.imshow('Combined Edges', combined_edges)

# 等待按键按下
cv2.waitKey(0)
cv2.destroyAllWindows()